package com.itCar.base.api.tacticsPaymentDemo;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * @ClassName PayTypeEnum
 * @Description TODO 定义支付枚举
 * @Author liuzhiguo
 * @Date 2024/9/18 9:16
 * @Version 1.0
 */
@Getter
@AllArgsConstructor
public enum PayTypeEnum {

    /**
     * 枚举类型
     **/
    AlPay("alPay"), WxPay("wxPay"), CashPay("cashPay"), CardPay("cardPay");

    /**
     * 这里有个要求是payName必须和Bean的名字一致。
     **/
    private final String payName;

    /**
     * 通过枚举的ordinal 我们知道AlPay是0，WxPay是1，CashPay是2，我们就建立了一对一关系，只要给我数字这里就可以通过getPayTypeEnum()返回对应的枚举
     **/
    public static PayTypeEnum getPayTypeEnum(String ordinal) {
        return Arrays.stream(PayTypeEnum.values())
                .filter(payTypeEnum -> String.valueOf(payTypeEnum.ordinal()).equals(ordinal))
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("支付类型不存在"));
    }

}
